import axios from 'axios'
import { ElMessage } from 'element-plus';
import { useUserStore } from '@/stores/user'

const httpInstance = axios.create({   //配置axios
  baseURL: '/api',
  timeout: 10000
})
// 添加请求拦截器
httpInstance.interceptors.request.use(function (config) {
  // 在发送请求之前做些什么
   // 1. 从pinia获取token数据
   const userStore = useUserStore()
   // 2. 按照后端的要求拼接token数据
   const token = userStore.userInfo?.token
   if (token) {
     config.headers.Authorization = `Bearer ${token}`
   }
  return config;
}, function (error) {
  // 对请求错误做些什么
  return Promise.reject(error);
});
// 添加响应拦截器
httpInstance.interceptors.response.use(function (response) {
  // 2xx 范围内的状态码都会触发该函数。
  // 对响应数据做点什么
  return response;
}, function (error) {
  // 超出 2xx 范围的状态码都会触发该函数。
  // 对响应错误做点什么
  if (error.response?.status === 401) {
    setTimeout(() => {
      window.location.href = '/login';
    }, 1000); // 延迟 1 秒跳转
    console.log(error.response?.data.msg)
    ElMessage({ type: 'warning', message:error.response?.data.msg }) // 显示后端返回的具体错误 
  }
  else{
  ElMessage({ type: 'warning', message:error.response?.data.msg  })
  console.log(error.response)
}
  return Promise.reject(error);
});

export default httpInstance;
//配置参考：https://www.axios-http.cn/docs/interceptors